Voice communication for gaming and other electronic activities is becoming increasingly popular, particularly for individuals connected over the Internet or other network. For those participating in multiplayer games, voice communication greatly expands the depth of enjoyment and social interaction between players of a game. Most computing devices include audio circuitry such as sound cards or audio processing modules so that they are able to produce audible sounds and handle voice communications, as well as performing other processing required when executing applications such as game software. Often, a general central processing unit (CPU) in prior art computing devices, including conventional game consoles, must carry out a substantial portion of the processing required for implementing voice communications between individuals. For example, personal computers (PCs) enable voice-over-Internet protocol (VoIP) communication over a network using software such as Microsoft Corporation's GAME VOICE™, MSN MESSENGER™, and NETMEETING™. Whether for communication over a network or use within one machine, voice processing is typically controlled by the CPU in the PC executing a voice function software module, such as a specific application programming interface (API). For instance Microsoft Corporation's DIRECTPLAY™ Voice API captures one or more voices, encodes the voice data, and sends the voice data to an output. Unfortunately, voice communication and other audio data processing are computationally intensive. Using the primary processor of the computing device to perform voice communication may substantially burden the primary processor, and reduce its efficiency for performing other tasks, which can be particularly troublesome when executing game software applications, since the quality of play can be adversely impacted if the primary processor is not able to maintain the flow of the game in real time.
To help alleviate the burden on the CPU, many computing devices also include a coprocessor, a digital signal processor (DSP), or other secondary processor on a separate plug-in card or directly on the main circuit board. For example, PCs typically include a sound card for assisting in the processing of music, voice communications, and other audio data associated with music composition and playback, games, dictation, teleconferencing, and other activities. With regard to voice communications, a microphone is usually connected to the sound card for analog voice input. The analog voice input is converted to digital voice data with an analog to digital (A/D) converter, and a processor on the sound card routes the digital voice data to the CPU. Voice data received over a network connection is already in digital form and is routed directly to the CPU. In any case, the CPU determines whether to store the digital voice data in permanent storage, convert the data to some other form, packetize the data for transmission over the network, recognize a command, play the data through a speaker or headphone, or perform some other function determined by a related program executed by the CPU. To accomplish its function, the CPU coordinates with the device that is required for the function. For example, the CPU may instruct a processor on the sound card to pass the data through a digital to analog converter (D/A) and out to one or more speakers, or may instruct a network interface device to transmit the digital voice data over a network.
These input and output processes require some coordination between the processors involved. The primary CPU often runs at a different clock rate than the processor on the sound card, and at a different rate than communication interfaces. Thus, the data may be buffered by the faster running processor until the slower processor can process the data. The buffering and changes in processing speed introduce latency between the input and output of the voice communication. A drifting latency may also be introduced if differing clock rates are not easily synchronized, such as by a simple multiplier. Thus, additional time cushions and control schemes may be built into the coordination process to accommodate the drift in processing that arises between multiple processors in a machine. To provide high quality, real-time voice communication, it is desirable to minimize the amount of coordination required between processors and to minimize any latency between the input and output of the voice communication.
Increases in processor capabilities and speeds have helped to reduce latency in processing audio data by different processors. However, improvement in the speed of hardware has not made the latency and coordination overhead negligible or undetectable to users. And, multimedia applications on low cost and limited capability hardware, such as game consoles, will often not include such higher cost processors. A game console typically includes a primary CPU that is relatively slower that the CPU employed on a PC, because of the need to maintain a relatively low cost for the game console. If voice communication were the only task required when executing a complex application program, such as a game, then the full capabilities of a primary CPU could readily be utilized. However in most circumstances, voice communication is just one of many functions that must be performed.
When multiple, computationally-intensive functions must be performed with limited capability processor hardware, each function must be prioritized to serve the greatest needs of the user. Typically, graphics and other primary tasks of an application program are considered to have a high priority, and these tasks consume a large amount of processor resources. Thus, sound processing and voice communication often receive a lower priority than the other tasks. Nevertheless, high quality sound is increasingly important to make a user's experience more realistic. In addition, voice processing is becoming more important to enhance the user's interaction with others. Therefore, it is desirable to reserve the CPU for executing high priority functions, yet provide voice communication with minimal latency and low overhead on a device with limited processing capabilities, such as a game console. It is further desirable to maintain a relatively low cost game console or other computing device by employing processors having somewhat limited capability, employ a minimal number of A/D and D/A converters, and use digital interfaces, such as the universal serial bus (USB), the Institute of Electrical and Electronics Engineers (IEEE) 1394 (e.g., FIREWIRE™) interface, or other such data communication interfaces.